Perform a 2D Fast Fourier Transform on a signal
This function takes a signal and performs a Fourier Transform using the specified method. The available methods are:
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=dp), | intent(inout), | DIMENSION(:, :) | :: | signal | ||
character(len=*), | intent(in) | :: | method | |||
integer, | intent(in), | optional | :: | threads |
FUNCTION FFT_2D(signal, method, threads) RESULT(result) COMPLEX(dp), DIMENSION(:, :), INTENT(INOUT) :: signal CHARACTER(*), INTENT(IN) :: method INTEGER, OPTIONAL, INTENT(IN) :: threads COMPLEX(dp), DIMENSION(SIZE(signal, 1) ,SIZE(signal, 2)) :: result IF(method == "NAFPack_FFT_2D")THEN result = NAFPack_FFT_2D(signal) ELSE IF(method == "FFTW_FFT_2D" .AND. .NOT. PRESENT(threads))THEN result = FFTW_FFT_2D(signal) ELSE IF (method == "FFTW_FFT_2D" .AND. PRESENT(threads))THEN result = FFTW_FFT_2D_threads(signal, threads) ELSE STOP "ERROR : Wrong method for FFT_2D" END IF END FUNCTION FFT_2D